library(ggplot2)
library(dplyr)
library(car)
# Read the CSV file
data <- read.csv("/Users/vinay/Desktop/LinearRegression/project/CO2_Emissions.csv")

str(data)
'data.frame':   7385 obs. of  12 variables:
 $ Make                         : chr  "ACURA" "ACURA" "ACURA" "ACURA" ...
 $ Model                        : chr  "ILX" "ILX" "ILX HYBRID" "MDX 4WD" ...
 $ Vehicle_Class                : chr  "COMPACT" "COMPACT" "COMPACT" "SUV - SMALL" ...
 $ EngineSize_L                 : num  2 2.4 1.5 3.5 3.5 3.5 3.5 3.7 3.7 2.4 ...
 $ Cylinders                    : int  4 4 4 6 6 6 6 6 6 4 ...
 $ Transmission                 : chr  "AS5" "M6" "AV7" "AS6" ...
 $ Fuel_Type                    : chr  "Z" "Z" "Z" "Z" ...
 $ Fuel_Consumption_City_L_100km: num  9.9 11.2 6 12.7 12.1 11.9 11.8 12.8 13.4 10.6 ...
 $ Fuel_Consumption_Hwy_L_100km : num  6.7 7.7 5.8 9.1 8.7 7.7 8.1 9 9.5 7.5 ...
 $ Fuel_Consumption_Comb_L_100km: num  8.5 9.6 5.9 11.1 10.6 10 10.1 11.1 11.6 9.2 ...
 $ Fuel_Consumption_Comb_mpg    : int  33 29 48 25 27 28 28 25 24 31 ...
 $ CO2_Emissions_g_per_km       : int  196 221 136 255 244 230 232 255 267 212 ...
summary(data)      # Summary statistics
     Make              Model           Vehicle_Class       EngineSize_L    Cylinders      Transmission        Fuel_Type         Fuel_Consumption_City_L_100km
 Length:7385        Length:7385        Length:7385        Min.   :0.90   Min.   : 3.000   Length:7385        Length:7385        Min.   : 4.20                
 Class :character   Class :character   Class :character   1st Qu.:2.00   1st Qu.: 4.000   Class :character   Class :character   1st Qu.:10.10                
 Mode  :character   Mode  :character   Mode  :character   Median :3.00   Median : 6.000   Mode  :character   Mode  :character   Median :12.10                
                                                          Mean   :3.16   Mean   : 5.615                                         Mean   :12.56                
                                                          3rd Qu.:3.70   3rd Qu.: 6.000                                         3rd Qu.:14.60                
                                                          Max.   :8.40   Max.   :16.000                                         Max.   :30.60                
 Fuel_Consumption_Hwy_L_100km Fuel_Consumption_Comb_L_100km Fuel_Consumption_Comb_mpg CO2_Emissions_g_per_km
 Min.   : 4.000               Min.   : 4.10                 Min.   :11.00             Min.   : 96.0         
 1st Qu.: 7.500               1st Qu.: 8.90                 1st Qu.:22.00             1st Qu.:208.0         
 Median : 8.700               Median :10.60                 Median :27.00             Median :246.0         
 Mean   : 9.042               Mean   :10.98                 Mean   :27.48             Mean   :250.6         
 3rd Qu.:10.200               3rd Qu.:12.60                 3rd Qu.:32.00             3rd Qu.:288.0         
 Max.   :20.600               Max.   :26.10                 Max.   :69.00             Max.   :522.0         
head(data)
sum(is.na(data))
[1] 0
data$Make <- as.factor(data$Make)
data$Model <- as.factor(data$Model)
data$Vehicle_Class <- as.factor(data$Vehicle_Class)
data$Transmission <- as.factor(data$Transmission)
data$Fuel_Type <- as.factor(data$Fuel_Type)
data <- data %>% 
  mutate(across(c(Make, Model, Vehicle_Class, Transmission, Fuel_Type), as.integer))
str(data)
'data.frame':   7385 obs. of  12 variables:
 $ Make                         : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Model                        : int  1058 1058 1059 1252 1524 1542 1801 1802 1802 1836 ...
 $ Vehicle_Class                : int  1 1 1 12 12 3 3 3 3 1 ...
 $ EngineSize_L                 : num  2 2.4 1.5 3.5 3.5 3.5 3.5 3.7 3.7 2.4 ...
 $ Cylinders                    : int  4 4 4 6 6 6 6 6 6 4 ...
 $ Transmission                 : int  15 26 23 16 16 16 16 16 26 15 ...
 $ Fuel_Type                    : int  5 5 5 5 5 5 5 5 5 5 ...
 $ Fuel_Consumption_City_L_100km: num  9.9 11.2 6 12.7 12.1 11.9 11.8 12.8 13.4 10.6 ...
 $ Fuel_Consumption_Hwy_L_100km : num  6.7 7.7 5.8 9.1 8.7 7.7 8.1 9 9.5 7.5 ...
 $ Fuel_Consumption_Comb_L_100km: num  8.5 9.6 5.9 11.1 10.6 10 10.1 11.1 11.6 9.2 ...
 $ Fuel_Consumption_Comb_mpg    : int  33 29 48 25 27 28 28 25 24 31 ...
 $ CO2_Emissions_g_per_km       : int  196 221 136 255 244 230 232 255 267 212 ...
model <- lm(Fuel_Consumption_Comb_L_100km ~ EngineSize_L, data = data)

summary(model)

Call:
lm(formula = Fuel_Consumption_Comb_L_100km ~ EngineSize_L, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.0805 -0.9231 -0.1505  0.7986 10.1686 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   5.46000    0.04927   110.8   <2e-16 ***
EngineSize_L  1.74524    0.01433   121.8   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.668 on 7383 degrees of freedom
Multiple R-squared:  0.6676,    Adjusted R-squared:  0.6675 
F-statistic: 1.483e+04 on 1 and 7383 DF,  p-value: < 2.2e-16
# Plot the data and the regression line
ggplot(data, aes(x = EngineSize_L, y = Fuel_Consumption_Comb_L_100km)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  labs(x = "Engine Size (L)", y = "Fuel Consumption (L/100 km)", 
       title = "Relationship between Engine Size and Fuel Consumption")

par(mfrow=c(2,2))
plot(model)

plot(data$EngineSize_L, data$Fuel_Consumption_Comb_L_100km, 
     xlab = "Engine Size (L)", ylab = "Fuel Consumption (L/100 km)",
     main = "Relationship between Engine Size and Fuel Consumption")

cylinders_model <- lm(CO2_Emissions_g_per_km ~ Cylinders, data = data)

summary(cylinders_model)

Call:
lm(formula = CO2_Emissions_g_per_km ~ Cylinders, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-111.548  -20.139   -1.139   18.861  150.861 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 100.9569     1.2181   82.88   <2e-16 ***
Cylinders    26.6477     0.2063  129.19   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 32.41 on 7383 degrees of freedom
Multiple R-squared:  0.6933,    Adjusted R-squared:  0.6933 
F-statistic: 1.669e+04 on 1 and 7383 DF,  p-value: < 2.2e-16
ggplot(data, aes(x = Cylinders, y = CO2_Emissions_g_per_km)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  labs(x = "Number of Cylinders", y = "CO2 Emissions (g/km)", 
       title = "Relationship between Number of Cylinders and CO2 Emissions")

# Create dummy variables for 'Vehicle_Class' using model.matrix
# This creates a full set of dummy variables (one for each class)


# Fit the linear model with the dummy variables for vehicle class as predictors
# This assumes that 'Fuel_Consumption_Comb_L_100_km' is the correct name of your dependent variable
vehicle_class_dummies <- model.matrix(~ Vehicle_Class - 1, data = data)

model_data <- data.frame(Fuel_Consumption_Comb_L_100km = data$Fuel_Consumption_Comb_L_100km, vehicle_class_dummies)

# Fit the linear model
model_vehicle_class <- lm(Fuel_Consumption_Comb_L_100km ~ ., data = model_data)

# View the summary of the model
summary(model_vehicle_class)

Call:
lm(formula = Fuel_Consumption_Comb_L_100km ~ ., data = model_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.5336 -1.4439 -0.2502  1.1561 10.3906 

Coefficients: (1 not defined because of singularities)
                                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)                            19.1924     0.2796  68.650   <2e-16 ***
Vehicle_ClassCOMPACT                   -9.8485     0.2885 -34.142   <2e-16 ***
Vehicle_ClassFULL.SIZE                 -7.5588     0.2937 -25.741   <2e-16 ***
Vehicle_ClassMID.SIZE                  -9.5831     0.2876 -33.321   <2e-16 ***
Vehicle_ClassMINICOMPACT               -9.0237     0.3066 -29.435   <2e-16 ***
Vehicle_ClassMINIVAN                   -7.2574     0.3777 -19.216   <2e-16 ***
Vehicle_ClassPICKUP.TRUCK...SMALL      -7.4748     0.3326 -22.476   <2e-16 ***
Vehicle_ClassPICKUP.TRUCK...STANDARD   -5.3116     0.2962 -17.931   <2e-16 ***
Vehicle_ClassSPECIAL.PURPOSE.VEHICLE   -8.4288     0.3810 -22.123   <2e-16 ***
Vehicle_ClassSTATION.WAGON...MID.SIZE  -8.9603     0.4189 -21.389   <2e-16 ***
Vehicle_ClassSTATION.WAGON...SMALL    -10.6496     0.3141 -33.910   <2e-16 ***
Vehicle_ClassSUBCOMPACT                -8.6180     0.2944 -29.273   <2e-16 ***
Vehicle_ClassSUV...SMALL               -8.9606     0.2870 -31.216   <2e-16 ***
Vehicle_ClassSUV...STANDARD            -5.5422     0.2919 -18.990   <2e-16 ***
Vehicle_ClassTWO.SEATER                -7.2711     0.2990 -24.322   <2e-16 ***
Vehicle_ClassVAN...CARGO               -0.4742     0.5591  -0.848    0.396    
Vehicle_ClassVAN...PASSENGER                NA         NA      NA       NA    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.271 on 7369 degrees of freedom
Multiple R-squared:  0.3847,    Adjusted R-squared:  0.3834 
F-statistic: 307.1 on 15 and 7369 DF,  p-value: < 2.2e-16
plot(model_vehicle_class)



# Create dummy variables for categorical variables
vehicle_class_dummies <- model.matrix(~ Vehicle_Class, data = data)[, -1]
fuel_type_dummies <- model.matrix(~ Fuel_Type, data = data)[, -1]
transmission_dummies <- model.matrix(~ Transmission, data = data)[, -1]

# Combine the dummy variables with the original data frame
data <- cbind(data, vehicle_class_dummies, fuel_type_dummies, transmission_dummies)
# Fit the multiple linear regression model
# Adjust this formula based on your specific variable names and predictors
model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + ., data = data)

# View the summary of the model
summary(model)

Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + 
    ., data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-38.456  -1.407   0.000   1.368  21.479 

Coefficients: (93 not defined because of singularities)
                                                 Estimate Std. Error  t value Pr(>|t|)    
(Intercept)                                     2.055e+02  4.085e+00   50.314  < 2e-16 ***
EngineSize_L                                    2.065e+00  2.809e-01    7.350 2.28e-13 ***
Cylinders                                       5.242e-01  1.865e-01    2.810 0.004971 ** 
MakeALFA ROMEO                                  1.272e+01  4.870e+00    2.612 0.009020 ** 
MakeASTON MARTIN                                8.553e+00  3.168e+00    2.700 0.006958 ** 
MakeAUDI                                        1.507e+00  3.477e+00    0.434 0.664653    
MakeBENTLEY                                     3.761e+01  4.479e+00    8.399  < 2e-16 ***
MakeBMW                                         2.631e+00  3.159e+00    0.833 0.405067    
MakeBUGATTI                                     6.405e+01  4.590e+00   13.955  < 2e-16 ***
MakeBUICK                                       2.916e+00  2.584e+00    1.128 0.259160    
MakeCADILLAC                                    4.324e+00  3.038e+00    1.423 0.154676    
MakeCHEVROLET                                   4.797e+00  3.834e+00    1.251 0.210937    
MakeCHRYSLER                                    7.940e+00  4.377e+00    1.814 0.069738 .  
MakeDODGE                                       8.097e+00  4.375e+00    1.851 0.064266 .  
MakeFIAT                                        1.084e+01  2.968e+00    3.653 0.000261 ***
MakeFORD                                        1.646e+00  4.331e+00    0.380 0.703905    
MakeGENESIS                                     5.394e+00  2.953e+00    1.827 0.067815 .  
MakeGMC                                         4.442e+00  4.417e+00    1.006 0.314646    
MakeHONDA                                       7.718e+00  3.162e+00    2.441 0.014675 *  
MakeHYUNDAI                                     1.382e+01  3.601e+00    3.838 0.000125 ***
MakeINFINITI                                    1.322e+01  4.432e+00    2.983 0.002871 ** 
MakeJAGUAR                                      3.568e+00  4.350e+00    0.820 0.412148    
MakeJEEP                                        1.130e+01  4.156e+00    2.718 0.006587 ** 
MakeKIA                                         5.337e+00  4.861e+00    1.098 0.272258    
MakeLAMBORGHINI                                 2.667e+01  4.428e+00    6.022 1.83e-09 ***
MakeLAND ROVER                                  9.920e+00  4.870e+00    2.037 0.041690 *  
MakeLEXUS                                       2.475e+01  3.581e+00    6.910 5.43e-12 ***
MakeLINCOLN                                     1.348e+01  4.679e+00    2.880 0.003994 ** 
MakeMASERATI                                    5.557e+00  3.132e+00    1.774 0.076084 .  
MakeMAZDA                                       6.397e+00  2.830e+00    2.260 0.023831 *  
MakeMERCEDES-BENZ                               1.669e+01  4.388e+00    3.804 0.000144 ***
MakeMINI                                        4.148e+00  2.947e+00    1.407 0.159416    
MakeMITSUBISHI                                  1.293e+00  3.419e+00    0.378 0.705254    
MakeNISSAN                                      1.274e+01  3.719e+00    3.424 0.000621 ***
MakePORSCHE                                    -4.216e-01  4.600e+00   -0.092 0.926966    
MakeRAM                                         8.831e+00  3.032e+00    2.912 0.003602 ** 
MakeROLLS-ROYCE                                 1.695e+01  3.070e+00    5.523 3.49e-08 ***
MakeSCION                                       7.433e+00  3.627e+00    2.049 0.040509 *  
MakeSMART                                       1.232e+01  3.716e+00    3.316 0.000918 ***
MakeSRT                                         1.668e+01  4.382e+00    3.807 0.000142 ***
MakeSUBARU                                      7.855e+00  3.849e+00    2.041 0.041287 *  
MakeTOYOTA                                      1.524e+01  2.837e+00    5.374 8.02e-08 ***
MakeVOLKSWAGEN                                  6.334e+00  4.702e+00    1.347 0.178025    
MakeVOLVO                                      -1.951e+00  4.447e+00   -0.439 0.660801    
Model124 SPIDER                                -1.936e-13  2.577e+00    0.000 1.000000    
Model1500                                       5.666e+00  2.414e+00    2.347 0.018946 *  
Model1500 (MDS)                                 3.776e+00  2.482e+00    1.521 0.128241    
Model1500 4X4                                   7.662e+00  2.421e+00    3.165 0.001560 ** 
Model1500 4X4 (MDS)                             5.649e+00  2.490e+00    2.269 0.023306 *  
Model1500 4X4 DIESEL                            6.481e+00  4.201e+00    1.543 0.122961    
Model1500 4X4 EcoDiesel                        -1.208e+00  4.196e+00   -0.288 0.773433    
Model1500 4X4 ECODIESEL                         4.707e+00  2.774e+00    1.696 0.089851 .  
Model1500 4X4 eTorque                          -8.818e-01  2.705e+00   -0.326 0.744456    
Model1500 4X4 FFV                               3.014e+00  2.300e+00    1.310 0.190109    
Model1500 Classic                               5.927e+00  2.691e+00    2.202 0.027687 *  
Model1500 Classic 4X4                           8.443e+00  2.699e+00    3.129 0.001766 ** 
Model1500 Classic 4X4 EcoDiesel                 4.433e+00  4.204e+00    1.054 0.291747    
Model1500 Classic 4X4 FFV                       6.463e+00  3.257e+00    1.985 0.047234 *  
Model1500 Classic EcoDiesel                     1.603e+00  4.201e+00    0.382 0.702758    
Model1500 Classic FFV                           6.260e+00  3.250e+00    1.926 0.054166 .  
Model1500 DIESEL                                4.428e+00  4.199e+00    1.055 0.291593    
Model1500 EcoDiesel                            -3.135e+00  4.193e+00   -0.748 0.454645    
Model1500 ECODIESEL                             1.996e+00  2.771e+00    0.720 0.471351    
Model1500 ECODIESEL HFE                         1.867e+00  3.311e+00    0.564 0.572775    
Model1500 eTorque                              -1.787e+00  2.698e+00   -0.662 0.507823    
Model1500 FFV                                   2.813e+00  2.291e+00    1.228 0.219555    
Model1500 HFE                                  -3.769e+00  2.883e+00   -1.307 0.191201    
Model1500 HFE eTorque                          -1.720e+00  3.248e+00   -0.530 0.596401    
Model200                                       -2.680e+00  4.553e+00   -0.589 0.556124    
Model200 AWD                                   -6.026e+00  5.226e+00   -1.153 0.248987    
Model200 AWD FFV                                1.821e+00  4.034e+00    0.451 0.651723    
Model200 CONVERTIBLE                           -4.238e+00  4.541e+00   -0.933 0.350741    
Model200 CONVERTIBLE FFV                       -2.693e+00  4.517e+00   -0.596 0.551137    
Model200 FFV                                    6.163e+00  3.901e+00    1.580 0.114238    
Model200 SEDAN                                 -2.507e+00  4.618e+00   -0.543 0.587329    
Model200 SEDAN FFV                             -1.243e+00  4.598e+00   -0.270 0.786992    
Model228i                                       1.650e+00  3.484e+00    0.474 0.635740    
Model228i CABRIOLET                            -1.751e+00  4.333e+00   -0.404 0.686119    
Model228i COUPE                                -2.408e+00  3.485e+00   -0.691 0.489712    
Model228i xDRIVE                                1.830e+00  4.335e+00    0.422 0.672970    
Model228i xDRIVE CABRIOLET                     -3.336e-01  3.483e+00   -0.096 0.923696    
Model228i xDRIVE COUPE                         -3.861e+00  4.336e+00   -0.891 0.373206    
Model230i Cabriolet                            -1.747e-02  4.333e+00   -0.004 0.996783    
Model230i CABRIOLET                             2.710e+00  4.332e+00    0.626 0.531606    
Model230i Coupe                                 1.495e+00  4.335e+00    0.345 0.730182    
Model230i COUPE                                 1.293e+00  2.966e+00    0.436 0.662881    
Model230i xDrive Cabriolet                      4.816e-01  3.480e+00    0.138 0.889919    
Model230i xDRIVE CABRIOLET                      1.204e+00  3.480e+00    0.346 0.729345    
Model230i xDrive Coupe                          9.522e-01  3.481e+00    0.274 0.784438    
Model230i xDRIVE COUPE                          8.475e-01  3.481e+00    0.243 0.807666    
Model300                                       -6.895e+00  4.089e+00   -1.686 0.091853 .  
Model300 (MDS)                                 -7.277e+00  4.331e+00   -1.680 0.092953 .  
Model300 AWD                                   -4.037e+00  4.158e+00   -0.971 0.331566    
Model300 AWD (MDS)                             -7.332e+00  5.380e+00   -1.363 0.173009    
Model300 AWD FFV                               -1.327e+00  4.064e+00   -0.327 0.744048    
Model300 FFV                                   -3.647e+00  4.096e+00   -0.890 0.373292    
Model300 SRT (MDS)                             -1.133e+01  5.403e+00   -2.098 0.035979 *  
Model320i                                       2.262e+00  2.644e+00    0.856 0.392236    
Model320i SEDAN                                -1.712e+00  3.377e+00   -0.507 0.612275    
Model320i xDRIVE                                1.510e+00  3.031e+00    0.498 0.618422    
Model320i xDRIVE SEDAN                         -3.165e+00  4.251e+00   -0.745 0.456491    
Model328d xDRIVE                                6.280e+00  2.940e+00    2.136 0.032723 *  
Model328d xDRIVE SEDAN                          8.042e+00  4.318e+00    1.862 0.062602 .  
Model328d xDRIVE TOURING                        5.664e+00  3.180e+00    1.781 0.074937 .  
Model328i                                      -5.368e-01  3.384e+00   -0.159 0.873973    
Model328i SEDAN                                -1.712e+00  3.377e+00   -0.507 0.612275    
Model328i xDRIVE                                1.664e+00  3.376e+00    0.493 0.622022    
Model328i xDRIVE GRAN TURISMO                  -3.040e+00  3.287e+00   -0.925 0.355152    
Model328i xDRIVE SEDAN                         -2.492e+00  4.245e+00   -0.587 0.557155    
Model328i xDRIVE TOURING                       -6.900e-01  3.352e+00   -0.206 0.836911    
Model330i xDrive                                2.172e+00  4.252e+00    0.511 0.609459    
Model330i xDRIVE                                1.900e+00  3.373e+00    0.563 0.573271    
Model330i xDrive Gran Turismo                  -1.337e+00  4.435e+00   -0.301 0.763061    
Model330i xDRIVE GRAN TURISMO                  -1.418e+00  3.606e+00   -0.393 0.694129    
Model330i xDrive Sedan                          3.172e+00  4.252e+00    0.746 0.455662    
Model330i xDrive Touring                        1.013e+00  4.483e+00    0.226 0.821337    
Model330i xDRIVE TOURING                        9.313e-01  3.666e+00    0.254 0.799505    
Model335i                                      -5.230e+00  3.367e+00   -1.553 0.120474    
Model335i SEDAN                                -6.255e+00  3.365e+00   -1.859 0.063078 .  
Model335i xDRIVE                               -3.838e+00  3.363e+00   -1.141 0.253785    
Model335i xDRIVE GRAN TURISMO                  -6.949e+00  3.279e+00   -2.119 0.034132 *  
Model335i xDRIVE SEDAN                         -6.708e+00  3.360e+00   -1.997 0.045929 *  
Model340i                                      -2.121e+00  2.627e+00   -0.807 0.419642    
Model340i xDRIVE                               -1.671e+00  2.620e+00   -0.638 0.523652    
Model340i xDRIVE GRAN TURISMO                  -4.619e+00  3.601e+00   -1.283 0.199626    
Model370Z                                      -8.171e+00  3.081e+00   -2.652 0.008029 ** 
Model370Z COUPE                                -1.288e+01  3.877e+00   -3.321 0.000902 ***
Model370Z Roadster                             -3.948e+00  3.416e+00   -1.156 0.247760    
Model370Z ROADSTER                             -7.671e+00  3.112e+00   -2.465 0.013718 *  
Model428i CABRIOLET                             1.017e+00  3.487e+00    0.292 0.770615    
Model428i COUPE                                 3.253e-02  2.642e+00    0.012 0.990179    
Model428i GRAN COUPE                           -3.094e-01  2.842e+00   -0.109 0.913327    
Model428i xDRIVE CABRIOLET                     -1.331e+00  3.480e+00   -0.382 0.702253    
Model428i xDRIVE COUPE                          2.787e-01  3.028e+00    0.092 0.926667    
Model428i xDRIVE GRAN COUPE                     3.621e-01  3.376e+00    0.107 0.914591    
Model430i Coupe                                 6.783e-01  4.247e+00    0.160 0.873127    
Model430i xDrive Cabriolet                      4.237e-01  3.480e+00    0.122 0.903118    
Model430i xDRIVE CABRIOLET                     -3.284e-01  3.481e+00   -0.094 0.924857    
Model430i xDrive Coupe                          1.177e+00  3.373e+00    0.349 0.727023    
Model430i xDRIVE COUPE                          1.900e+00  3.373e+00    0.563 0.573271    
Model430i xDrive Gran Coupe                     1.177e+00  3.373e+00    0.349 0.727023    
Model430i xDRIVE GRAN COUPE                     1.900e+00  3.373e+00    0.563 0.573271    
Model435i CABRIOLET                            -2.651e+00  3.479e+00   -0.762 0.446094    
Model435i COUPE                                -3.598e+00  2.622e+00   -1.372 0.170067    
Model435i GRAN COUPE                           -6.912e+00  4.244e+00   -1.629 0.103411    
Model435i xDRIVE CABRIOLET                     -4.369e+00  3.472e+00   -1.258 0.208374    
Model435i xDRIVE COUPE                         -3.495e+00  2.618e+00   -1.335 0.181960    
Model435i xDRIVE GRAN COUPE                    -3.722e+00  3.367e+00   -1.105 0.269035    
Model440i Coupe                                 1.330e+00  3.014e+00    0.441 0.659029    
Model440i COUPE                                -2.261e+00  2.831e+00   -0.799 0.424356    
Model440i xDrive Cabriolet                     -2.782e+00  3.471e+00   -0.801 0.423002    
Model440i xDRIVE CABRIOLET                     -1.996e+00  3.474e+00   -0.575 0.565603    
Model440i xDrive Coupe                         -5.957e-01  2.819e+00   -0.211 0.832686    
Model440i xDRIVE COUPE                         -8.563e-01  2.822e+00   -0.303 0.761595    
Model440i xDrive Gran Coupe                    -2.193e+00  3.366e+00   -0.651 0.514840    
Model440i xDRIVE GRAN COUPE                    -1.231e+00  3.370e+00   -0.365 0.714792    
Model4C                                        -7.834e+00  4.697e+00   -1.668 0.095414 .  
Model4C Coupe                                  -5.834e+00  5.659e+00   -1.031 0.302605    
Model4C COUPE                                  -5.834e+00  5.659e+00   -1.031 0.302605    
Model4C Spider                                 -5.834e+00  5.038e+00   -1.158 0.246929    
Model4C SPIDER                                 -5.834e+00  5.038e+00   -1.158 0.246929    
Model4RUNNER (Part-Time 4WD)                   -1.282e+01  5.454e+00   -2.352 0.018726 *  
Model4Runner 4WD                               -8.166e+00  4.824e+00   -1.693 0.090542 .  
Model4RUNNER 4WD                               -1.124e+01  4.378e+00   -2.568 0.010257 *  
Model4Runner 4WD (Part-Time 4WD)               -8.166e+00  4.824e+00   -1.693 0.090542 .  
Model4RUNNER 4WD (Part-Time 4WD)               -1.085e+01  4.455e+00   -2.435 0.014930 *  
Model500                                        5.258e-01  3.675e+00    0.143 0.886244    
Model500 ABARTH                                -3.969e-01  4.102e+00   -0.097 0.922920    
Model500 ABARTH CABRIO                         -8.080e-02  3.477e+00   -0.023 0.981463    
Model500 ABARTH HATCHBACK                      -8.080e-02  3.477e+00   -0.023 0.981463    
Model500 CABRIO                                 2.593e+00  3.442e+00    0.753 0.451380    
Model500 CABRIO TURBO                          -1.675e+00  4.855e+00   -0.345 0.730041    
Model500 HATCHBACK                              4.415e+00  3.444e+00    1.282 0.199822    
Model500 HATCHBACK TURBO                       -4.926e-01  3.585e+00   -0.137 0.890728    
Model500L                                      -3.841e+00  2.593e+00   -1.481 0.138593    
Model500L TURBO                                -6.796e+00  3.478e+00   -1.954 0.050769 .  
Model500X                                      -2.770e+00  3.232e+00   -0.857 0.391463    
Model500X AWD                                  -3.038e+00  3.359e+00   -0.904 0.365794    
Model528i                                       1.812e+00  4.349e+00    0.417 0.677014    
Model528i SEDAN                                 3.946e-01  4.337e+00    0.091 0.927505    
Model528i xDRIVE                                3.114e+00  3.488e+00    0.893 0.372016    
Model528i xDRIVE SEDAN                         -1.042e+00  4.333e+00   -0.241 0.809924    
Model530i xDrive                                3.431e+00  4.337e+00    0.791 0.428832    
Model530i xDRIVE                                3.350e+00  3.485e+00    0.961 0.336431    
Model530i xDrive Sedan                          2.779e+00  4.336e+00    0.641 0.521542    
Model535d xDRIVE                                3.573e+00  3.561e+00    1.003 0.315761    
Model535d xDRIVE SEDAN                          2.965e+00  4.392e+00    0.675 0.499635    
Model535i xDRIVE                               -7.027e-01  3.479e+00   -0.202 0.839931    
Model535i xDRIVE GRAN TURISMO                  -5.330e+00  3.270e+00   -1.630 0.103205    
Model535i xDRIVE SEDAN                         -5.039e+00  4.326e+00   -1.165 0.244107    
Model540i xDrive                                1.995e+00  4.331e+00    0.461 0.645030    
Model540i xDRIVE                                4.504e-02  3.479e+00    0.013 0.989671    
Model540i xDrive Sedan                         -2.685e-02  4.336e+00   -0.006 0.995060    
Model550i xDRIVE                                1.453e+00  3.477e+00    0.418 0.675953    
Model550i xDRIVE GRAN TURISMO                  -4.215e+00  3.276e+00   -1.287 0.198267    
Model550i xDRIVE SEDAN                         -1.945e+00  4.327e+00   -0.450 0.653016    
Model640i xDRIVE CABRIOLET                     -1.760e+00  2.955e+00   -0.596 0.551429    
Model640i xDrive Gran Coupe                     1.505e+00  4.237e+00    0.355 0.722531    
Model640i xDRIVE GRAN COUPE                    -1.541e+00  2.706e+00   -0.570 0.568915    
Model640i xDrive Gran Turismo                  -5.964e+00  4.425e+00   -1.348 0.177765    
 [ reached getOption("max.print") -- omitted 1990 rows ]
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.644 on 5288 degrees of freedom
Multiple R-squared:  0.9972,    Adjusted R-squared:  0.9961 
F-statistic: 905.8 on 2096 and 5288 DF,  p-value: < 2.2e-16
model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_City_L_100km + Fuel_Consumption_Hwy_L_100km + Fuel_Consumption_Comb_L_100km, data = data)
summary(model)

Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + 
    Fuel_Consumption_City_L_100km + Fuel_Consumption_Hwy_L_100km + 
    Fuel_Consumption_Comb_L_100km, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-119.233   -6.584    1.905   10.559   72.796 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    50.8179     1.1797  43.078   <2e-16 ***
EngineSize_L                    5.5090     0.5105  10.790   <2e-16 ***
Cylinders                       6.5421     0.3563  18.360   <2e-16 ***
Fuel_Consumption_City_L_100km   1.2212     3.0696   0.398   0.6908    
Fuel_Consumption_Hwy_L_100km    1.4350     2.5320   0.567   0.5709    
Fuel_Consumption_Comb_L_100km  10.6892     5.5664   1.920   0.0549 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.34 on 7379 degrees of freedom
Multiple R-squared:  0.8792,    Adjusted R-squared:  0.8791 
F-statistic: 1.074e+04 on 5 and 7379 DF,  p-value: < 2.2e-16
vif_model <- vif(model)
vif_model
                 EngineSize_L                     Cylinders Fuel_Consumption_City_L_100km  Fuel_Consumption_Hwy_L_100km Fuel_Consumption_Comb_L_100km 
                     8.528664                      7.572818                   2059.866977                    566.043118                   4625.521279 

data_subset <- data[, c("EngineSize_L", "Cylinders", "Fuel_Consumption_City_L_100km", 
                        "Fuel_Consumption_Hwy_L_100km", "Fuel_Consumption_Comb_L_100km")]

cor.mat <- round(cor(data_subset), 2)

cor.mat
                              EngineSize_L Cylinders Fuel_Consumption_City_L_100km Fuel_Consumption_Hwy_L_100km Fuel_Consumption_Comb_L_100km
EngineSize_L                          1.00      0.93                          0.83                         0.76                          0.82
Cylinders                             0.93      1.00                          0.80                         0.72                          0.78
Fuel_Consumption_City_L_100km         0.83      0.80                          1.00                         0.95                          0.99
Fuel_Consumption_Hwy_L_100km          0.76      0.72                          0.95                         1.00                          0.98
Fuel_Consumption_Comb_L_100km         0.82      0.78                          0.99                         0.98                          1.00
# Plot diagnostics
plot(model)

revised_model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

# View the summary of the revised model
summary(revised_model)

Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + 
    Fuel_Consumption_Comb_L_100km, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-119.333   -6.584    1.820   10.574   72.943 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    51.1704     1.0990   46.56   <2e-16 ***
EngineSize_L                    5.4971     0.5103   10.77   <2e-16 ***
Cylinders                       6.4857     0.3486   18.60   <2e-16 ***
Fuel_Consumption_Comb_L_100km  13.2688     0.1427   92.96   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.34 on 7381 degrees of freedom
Multiple R-squared:  0.8792,    Adjusted R-squared:  0.8791 
F-statistic: 1.791e+04 on 3 and 7381 DF,  p-value: < 2.2e-16
# Check VIF for the revised model
vif_revised_model <- vif(revised_model)
vif_revised_model
                 EngineSize_L                     Cylinders Fuel_Consumption_Comb_L_100km 
                     8.523051                      7.250291                      3.041778 
# Plot diagnostics
plot(revised_model)

# Apply a log transformation to the CO2 emissions
data$log_CO2_Emissions_g_per_km <- log(data$CO2_Emissions_g_per_km)

# Fit the model with the log-transformed CO2 emissions
log_model <- lm(log_CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

# View the summary of the model
summary(log_model)

Call:
lm(formula = log_CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + 
    Fuel_Consumption_Comb_L_100km, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.64747 -0.02282  0.02156  0.05278  0.26397 

Coefficients:
                               Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   4.7058910  0.0050325 935.096   <2e-16 ***
EngineSize_L                  0.0222388  0.0023369   9.516   <2e-16 ***
Cylinders                     0.0179695  0.0015964  11.256   <2e-16 ***
Fuel_Consumption_Comb_L_100km 0.0564375  0.0006536  86.350   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.09314 on 7381 degrees of freedom
Multiple R-squared:  0.8439,    Adjusted R-squared:  0.8438 
F-statistic: 1.33e+04 on 3 and 7381 DF,  p-value: < 2.2e-16
plot(log_model)

# Fit a model with a second-degree polynomial for Engine Size
poly_model <- lm(CO2_Emissions_g_per_km ~ poly(EngineSize_L, 2) + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

# Fit a model with interaction terms
interact_model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L * Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

# View the summary of the polynomial model
summary(poly_model)

Call:
lm(formula = CO2_Emissions_g_per_km ~ poly(EngineSize_L, 2) + 
    Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-118.675   -6.733    1.877   10.484   72.440 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    69.6475     2.3996  29.024  < 2e-16 ***
poly(EngineSize_L, 2)1        660.9220    59.5441  11.100  < 2e-16 ***
poly(EngineSize_L, 2)2        -84.8337    20.5704  -4.124 3.76e-05 ***
Cylinders                       6.4668     0.3483  18.568  < 2e-16 ***
Fuel_Consumption_Comb_L_100km  13.1777     0.1443  91.335  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.32 on 7380 degrees of freedom
Multiple R-squared:  0.8795,    Adjusted R-squared:  0.8794 
F-statistic: 1.346e+04 on 4 and 7380 DF,  p-value: < 2.2e-16
# View the summary of the interaction model
summary(interact_model)

Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L * Cylinders + 
    Fuel_Consumption_Comb_L_100km, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-118.849   -6.715    1.890   10.486   73.146 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   45.96580    2.17492  21.134  < 2e-16 ***
EngineSize_L                   6.83821    0.70296   9.728  < 2e-16 ***
Cylinders                      7.62848    0.53973  14.134  < 2e-16 ***
Fuel_Consumption_Comb_L_100km 13.22198    0.14366  92.036  < 2e-16 ***
EngineSize_L:Cylinders        -0.24634    0.08884  -2.773  0.00557 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.33 on 7380 degrees of freedom
Multiple R-squared:  0.8793,    Adjusted R-squared:  0.8793 
F-statistic: 1.344e+04 on 4 and 7380 DF,  p-value: < 2.2e-16
plot(poly_model)

plot(interact_model)

library(MASS)

Attaching package: ‘MASS’

The following object is masked from ‘package:dplyr’:

    select
# Find the optimal Box-Cox transformation for the response variable
bc <- boxcox(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)


# Identify the lambda that maximizes the log-likelihood
lambda <- bc$x[which.max(bc$y)]

# Apply the Box-Cox transformation with the identified lambda
data$BC_CO2_Emissions <- (data$CO2_Emissions_g_per_km^lambda - 1) / lambda

# Fit the model with the Box-Cox transformed response variable
bc_model <- lm(BC_CO2_Emissions ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

# View the summary of the model
summary(bc_model)

Call:
lm(formula = BC_CO2_Emissions ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, 
    data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-74.091  -3.996   1.297   6.665  43.746 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   45.03431    0.66614   67.61   <2e-16 ***
EngineSize_L                   3.34839    0.30933   10.82   <2e-16 ***
Cylinders                      3.80714    0.21131   18.02   <2e-16 ***
Fuel_Consumption_Comb_L_100km  8.05106    0.08651   93.06   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 12.33 on 7381 degrees of freedom
Multiple R-squared:  0.8782,    Adjusted R-squared:  0.8781 
F-statistic: 1.774e+04 on 3 and 7381 DF,  p-value: < 2.2e-16
plot(bc_model)

# Initial full model including all predictors
full_model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

# Stepwise regression using both directions (forward and backward)
stepwise_model <- step(full_model, direction="both")
Start:  AIC=44500.89
CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km

                                Df Sum of Sq     RSS   AIC
<none>                                       3054027 44501
- EngineSize_L                   1     48008 3102036 44614
- Cylinders                      1    143201 3197228 44837
- Fuel_Consumption_Comb_L_100km  1   3575803 6629830 50223
# View the summary of the stepwise model
summary(stepwise_model)

Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + 
    Fuel_Consumption_Comb_L_100km, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-119.333   -6.584    1.820   10.574   72.943 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    51.1704     1.0990   46.56   <2e-16 ***
EngineSize_L                    5.4971     0.5103   10.77   <2e-16 ***
Cylinders                       6.4857     0.3486   18.60   <2e-16 ***
Fuel_Consumption_Comb_L_100km  13.2688     0.1427   92.96   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.34 on 7381 degrees of freedom
Multiple R-squared:  0.8792,    Adjusted R-squared:  0.8791 
F-statistic: 1.791e+04 on 3 and 7381 DF,  p-value: < 2.2e-16

data <- read.csv("/Users/vinay/Desktop/LinearRegression/project/CO2_Emissions.csv")

data$Vehicle_Class <- as.factor(data$Vehicle_Class)
data$Transmission <- as.factor(data$Transmission)
data$Fuel_Type <- as.factor(data$Fuel_Type)

full_model_cat <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + 
                     Fuel_Consumption_Comb_L_100km + Vehicle_Class + 
                     Transmission + Fuel_Type, data = data)

stepwise_model_cat <- step(full_model_cat, direction="both")
Start:  AIC=24110.22
CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km + 
    Vehicle_Class + Transmission + Fuel_Type

                                Df Sum of Sq     RSS   AIC
<none>                                        190745 24110
- EngineSize_L                   1        52  190797 24110
- Cylinders                      1       806  191550 24139
- Transmission                  26      6111  196855 24291
- Vehicle_Class                 15     12389  203134 24545
- Fuel_Type                      4   2273662 2464407 42999
- Fuel_Consumption_Comb_L_100km  1   3523555 3714299 46034
summary(stepwise_model_cat)

Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + 
    Fuel_Consumption_Comb_L_100km + Vehicle_Class + Transmission + 
    Fuel_Type, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-54.422  -2.345   0.001   1.924  44.217 

Coefficients:
                                        Estimate Std. Error  t value Pr(>|t|)    
(Intercept)                             37.91087    1.03998   36.454  < 2e-16 ***
EngineSize_L                             0.20242    0.14332    1.412 0.157897    
Cylinders                                0.56774    0.10200    5.566 2.70e-08 ***
Fuel_Consumption_Comb_L_100km           22.35300    0.06072  368.124  < 2e-16 ***
Vehicle_ClassFULL-SIZE                   1.29955    0.27725    4.687 2.82e-06 ***
Vehicle_ClassMID-SIZE                    0.10760    0.22639    0.475 0.634601    
Vehicle_ClassMINICOMPACT                -0.54284    0.37441   -1.450 0.147142    
Vehicle_ClassMINIVAN                     1.23406    0.61368    2.011 0.044370 *  
Vehicle_ClassPICKUP TRUCK - SMALL        3.86730    0.48333    8.001 1.42e-15 ***
Vehicle_ClassPICKUP TRUCK - STANDARD     1.30125    0.34733    3.746 0.000181 ***
Vehicle_ClassSPECIAL PURPOSE VEHICLE     4.40229    0.62403    7.055 1.89e-12 ***
Vehicle_ClassSTATION WAGON - MID-SIZE    0.40311    0.73060    0.552 0.581133    
Vehicle_ClassSTATION WAGON - SMALL      -0.05029    0.36747   -0.137 0.891158    
Vehicle_ClassSUBCOMPACT                  0.25911    0.26694    0.971 0.331759    
Vehicle_ClassSUV - SMALL                 1.20698    0.24402    4.946 7.73e-07 ***
Vehicle_ClassSUV - STANDARD              0.86486    0.29760    2.906 0.003670 ** 
Vehicle_ClassTWO-SEATER                  0.53872    0.30756    1.752 0.079882 .  
Vehicle_ClassVAN - CARGO               -12.89604    1.39456   -9.247  < 2e-16 ***
Vehicle_ClassVAN - PASSENGER            -9.46474    0.77557  -12.204  < 2e-16 ***
TransmissionA4                          -7.11008    1.25096   -5.684 1.37e-08 ***
TransmissionA5                          -3.58671    1.11009   -3.231 0.001239 ** 
TransmissionA6                          -3.73105    0.96015   -3.886 0.000103 ***
TransmissionA7                          -1.49071    1.18542   -1.258 0.208599    
TransmissionA8                          -1.49889    0.96051   -1.561 0.118683    
TransmissionA9                          -1.05623    0.99129   -1.066 0.286679    
TransmissionAM5                         -6.57604    2.74010   -2.400 0.016423 *  
TransmissionAM6                         -3.28294    1.05848   -3.102 0.001932 ** 
TransmissionAM7                         -2.07518    0.98994   -2.096 0.036092 *  
TransmissionAM8                         -2.41801    1.15656   -2.091 0.036591 *  
TransmissionAM9                          2.00853    3.10299    0.647 0.517465    
TransmissionAS10                        -0.79986    1.01981   -0.784 0.432878    
TransmissionAS4                         -4.97383    3.74620   -1.328 0.184318    
TransmissionAS5                         -3.63436    1.37965   -2.634 0.008450 ** 
TransmissionAS6                         -2.57368    0.96456   -2.668 0.007642 ** 
TransmissionAS7                         -2.98707    0.98324   -3.038 0.002390 ** 
TransmissionAS8                         -2.27775    0.95886   -2.375 0.017552 *  
TransmissionAS9                         -1.97487    1.10941   -1.780 0.075100 .  
TransmissionAV                          -4.92078    1.00623   -4.890 1.03e-06 ***
TransmissionAV10                        -3.90648    1.80797   -2.161 0.030751 *  
TransmissionAV6                         -5.15088    1.06572   -4.833 1.37e-06 ***
TransmissionAV7                         -3.49470    1.06925   -3.268 0.001087 ** 
TransmissionAV8                         -3.82753    1.25279   -3.055 0.002257 ** 
TransmissionM5                          -3.50021    1.03733   -3.374 0.000744 ***
TransmissionM6                          -3.02898    0.97192   -3.116 0.001837 ** 
TransmissionM7                          -1.88369    1.12322   -1.677 0.093577 .  
Fuel_TypeE                            -141.46294    0.59599 -237.359  < 2e-16 ***
Fuel_TypeN                            -110.46307    5.12412  -21.557  < 2e-16 ***
Fuel_TypeX                             -29.32059    0.41865  -70.037  < 2e-16 ***
Fuel_TypeZ                             -29.45606    0.43697  -67.410  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5.099 on 7336 degrees of freedom
Multiple R-squared:  0.9925,    Adjusted R-squared:  0.9924 
F-statistic: 2.01e+04 on 48 and 7336 DF,  p-value: < 2.2e-16
data <- read.csv("/Users/vinay/Desktop/LinearRegression/project/CO2_Emissions.csv")

data$Transmission <- as.factor(data$Transmission)
data$Fuel_Type <- as.factor(data$Fuel_Type)

# Fit a model with the interaction term
model_fuel_efficiency <- lm(Fuel_Consumption_Comb_L_100km ~ Transmission * Fuel_Type, data = data)

# View the summary of the model
summary(model_fuel_efficiency)

Call:
lm(formula = Fuel_Consumption_Comb_L_100km ~ Transmission * Fuel_Type, 
    data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.6157 -1.4253 -0.1821  1.0771 10.4030 

Coefficients: (66 not defined because of singularities)
                            Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  9.44000    0.93734  10.071  < 2e-16 ***
TransmissionA4              -1.04031    1.08991  -0.954  0.33987    
TransmissionA5              -0.33182    1.28997  -0.257  0.79701    
TransmissionA6              -0.05944    1.00032  -0.059  0.95261    
TransmissionA7              -0.73370    0.53157  -1.380  0.16755    
TransmissionA8               0.37786    1.01759   0.371  0.71041    
TransmissionA9              -2.14000    1.22726  -1.744  0.08125 .  
TransmissionAM5             -7.68182    1.13927  -6.743 1.67e-11 ***
TransmissionAM6             -2.77333    1.26916  -2.185  0.02891 *  
TransmissionAM7             -2.33477    0.45881  -5.089 3.69e-07 ***
TransmissionAM8             -3.27698    0.52013  -6.300 3.14e-10 ***
TransmissionAM9             -3.13182    1.28997  -2.428  0.01521 *  
TransmissionAS10             0.66000    1.09197   0.604  0.54559    
TransmissionAS4             -3.02500    1.81515  -1.667  0.09565 .  
TransmissionAS5             -5.03182    1.13927  -4.417 1.02e-05 ***
TransmissionAS6             -1.90667    1.53067  -1.246  0.21294    
TransmissionAS7              0.12000    1.14800   0.105  0.91675    
TransmissionAS8             -1.06182    0.97902  -1.085  0.27815    
TransmissionAS9             -3.92427    0.53157  -7.382 1.73e-13 ***
TransmissionAV              -4.33182    0.96533  -4.487 7.32e-06 ***
TransmissionAV10            -5.57468    0.90954  -6.129 9.29e-10 ***
TransmissionAV6             -6.10960    0.82933  -7.367 1.94e-13 ***
TransmissionAV7             -5.16848    0.58832  -8.785  < 2e-16 ***
TransmissionAV8             -4.55105    0.60716  -7.496 7.37e-14 ***
TransmissionM5              -3.09848    0.96533  -3.210  0.00133 ** 
TransmissionM6              -2.63091    1.13047  -2.327  0.01998 *  
TransmissionM7              -2.94391    0.49795  -5.912 3.53e-09 ***
Fuel_TypeE                   4.58348    1.70550   2.687  0.00722 ** 
Fuel_TypeN                   5.16667    2.42020   2.135  0.03281 *  
Fuel_TypeX                   3.43500    1.40601   2.443  0.01459 *  
Fuel_TypeZ                   4.69182    1.03841   4.518 6.33e-06 ***
TransmissionA4:Fuel_TypeE    9.04807    1.86885   4.842 1.31e-06 ***
TransmissionA5:Fuel_TypeE    2.24833    2.04288   1.101  0.27112    
TransmissionA6:Fuel_TypeE    3.75162    1.74849   2.146  0.03193 *  
TransmissionA7:Fuel_TypeE         NA         NA      NA       NA    
TransmissionA8:Fuel_TypeE    1.11661    1.78276   0.626  0.53112    
TransmissionA9:Fuel_TypeE    1.16388    1.94100   0.600  0.54877    
TransmissionAM5:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAM6:Fuel_TypeE  -0.81682    2.25947  -0.362  0.71773    
TransmissionAM7:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAM8:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAM9:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAS10:Fuel_TypeE  3.40540    1.86187   1.829  0.06744 .  
TransmissionAS4:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAS5:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAS6:Fuel_TypeE   3.78446    2.10461   1.798  0.07219 .  
TransmissionAS7:Fuel_TypeE  -0.74348    2.10862  -0.353  0.72440    
TransmissionAS8:Fuel_TypeE   4.71056    1.79796   2.620  0.00881 ** 
TransmissionAS9:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAV:Fuel_TypeE         NA         NA      NA       NA    
TransmissionAV10:Fuel_TypeE       NA         NA      NA       NA    
TransmissionAV6:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAV7:Fuel_TypeE        NA         NA      NA       NA    
TransmissionAV8:Fuel_TypeE        NA         NA      NA       NA    
TransmissionM5:Fuel_TypeE         NA         NA      NA       NA    
TransmissionM6:Fuel_TypeE         NA         NA      NA       NA    
TransmissionM7:Fuel_TypeE         NA         NA      NA       NA    
TransmissionA4:Fuel_TypeN         NA         NA      NA       NA    
TransmissionA5:Fuel_TypeN         NA         NA      NA       NA    
TransmissionA6:Fuel_TypeN         NA         NA      NA       NA    
TransmissionA7:Fuel_TypeN         NA         NA      NA       NA    
TransmissionA8:Fuel_TypeN         NA         NA      NA       NA    
TransmissionA9:Fuel_TypeN         NA         NA      NA       NA    
TransmissionAM5:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAM6:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAM7:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAM8:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAM9:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAS10:Fuel_TypeN       NA         NA      NA       NA    
TransmissionAS4:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAS5:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAS6:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAS7:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAS8:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAS9:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAV:Fuel_TypeN         NA         NA      NA       NA    
TransmissionAV10:Fuel_TypeN       NA         NA      NA       NA    
TransmissionAV6:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAV7:Fuel_TypeN        NA         NA      NA       NA    
TransmissionAV8:Fuel_TypeN        NA         NA      NA       NA    
TransmissionM5:Fuel_TypeN         NA         NA      NA       NA    
TransmissionM6:Fuel_TypeN         NA         NA      NA       NA    
TransmissionM7:Fuel_TypeN         NA         NA      NA       NA    
TransmissionA4:Fuel_TypeX         NA         NA      NA       NA    
TransmissionA5:Fuel_TypeX    0.40682    1.67931   0.242  0.80859    
TransmissionA6:Fuel_TypeX   -0.80221    1.45160  -0.553  0.58053    
TransmissionA7:Fuel_TypeX         NA         NA      NA       NA    
TransmissionA8:Fuel_TypeX   -1.33534    1.46715  -0.910  0.36277    
TransmissionA9:Fuel_TypeX   -0.62300    1.62287  -0.384  0.70107    
TransmissionAM5:Fuel_TypeX        NA         NA      NA       NA    
TransmissionAM6:Fuel_TypeX  -2.96614    1.66338  -1.783  0.07460 .  
TransmissionAM7:Fuel_TypeX  -1.96587    1.19222  -1.649  0.09921 .  
TransmissionAM8:Fuel_TypeX        NA         NA      NA       NA    
TransmissionAM9:Fuel_TypeX        NA         NA      NA       NA    
TransmissionAS10:Fuel_TypeX -1.47840    1.52712  -0.968  0.33303    
TransmissionAS4:Fuel_TypeX        NA         NA      NA       NA    
TransmissionAS5:Fuel_TypeX   4.54318    1.61117   2.820  0.00482 ** 
TransmissionAS6:Fuel_TypeX  -0.76378    1.85622  -0.411  0.68074    
TransmissionAS7:Fuel_TypeX   0.37833    1.64591   0.230  0.81821    
TransmissionAS8:Fuel_TypeX  -1.89027    1.44209  -1.311  0.18997    
TransmissionAS9:Fuel_TypeX   2.05760    1.25055   1.645  0.09994 .  
TransmissionAV:Fuel_TypeX   -1.13592    1.43014  -0.794  0.42707    
TransmissionAV10:Fuel_TypeX -0.52532    1.73890  -0.302  0.76258    
TransmissionAV6:Fuel_TypeX   1.49133    1.35214   1.103  0.27009    
TransmissionAV7:Fuel_TypeX   0.30485    1.22241   0.249  0.80307    
TransmissionAV8:Fuel_TypeX   0.59913    1.34344   0.446  0.65564    
TransmissionM5:Fuel_TypeX   -1.43171    1.43322  -0.999  0.31785    
TransmissionM6:Fuel_TypeX   -1.14456    1.54485  -0.741  0.45878    
TransmissionM7:Fuel_TypeX         NA         NA      NA       NA    
TransmissionA4:Fuel_TypeZ         NA         NA      NA       NA    
TransmissionA5:Fuel_TypeZ         NA         NA      NA       NA    
TransmissionA6:Fuel_TypeZ   -2.79419    1.13145  -2.470  0.01355 *  
TransmissionA7:Fuel_TypeZ         NA         NA      NA       NA    
TransmissionA8:Fuel_TypeZ   -1.64142    1.12180  -1.463  0.14345    
TransmissionA9:Fuel_TypeZ   -0.63538    1.31636  -0.483  0.62934    
TransmissionAM5:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAM6:Fuel_TypeZ  -1.65636    1.37983  -1.200  0.23002    
TransmissionAM7:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAM8:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAM9:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAS10:Fuel_TypeZ -3.13182    1.24037  -2.525  0.01159 *  
TransmissionAS4:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAS5:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAS6:Fuel_TypeZ  -1.71955    1.60049  -1.074  0.28268    
TransmissionAS7:Fuel_TypeZ  -2.36975    1.23804  -1.914  0.05564 .  
TransmissionAS8:Fuel_TypeZ  -1.44474    1.07833  -1.340  0.18036    
TransmissionAS9:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAV:Fuel_TypeZ         NA         NA      NA       NA    
TransmissionAV10:Fuel_TypeZ       NA         NA      NA       NA    
TransmissionAV6:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAV7:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionAV8:Fuel_TypeZ        NA         NA      NA       NA    
TransmissionM5:Fuel_TypeZ         NA         NA      NA       NA    
TransmissionM6:Fuel_TypeZ   -0.68069    1.21947  -0.558  0.57673    
TransmissionM7:Fuel_TypeZ         NA         NA      NA       NA    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.096 on 7316 degrees of freedom
Multiple R-squared:  0.4798,    Adjusted R-squared:  0.4749 
F-statistic: 99.22 on 68 and 7316 DF,  p-value: < 2.2e-16
par(mfrow=c(2,2))
plot(model_fuel_efficiency)

LS0tCnRpdGxlOiAiQW5hbHl6aW5nIHRoZSBJbmZsdWVuY2Ugb2YgVmVoaWNsZSBBdHRyaWJ1dGVzIG9uIEZ1ZWwgQ29uc3VtcHRpb24gYW5kIEEgTGluZWFyIFJlZ3Jlc3Npb24gQXBwcm9hY2giCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoY2FyKQpgYGAKCmBgYHtyfQojIFJlYWQgdGhlIENTViBmaWxlCmRhdGEgPC0gcmVhZC5jc3YoIi9Vc2Vycy92aW5heS9EZXNrdG9wL0xpbmVhclJlZ3Jlc3Npb24vcHJvamVjdC9DTzJfRW1pc3Npb25zLmNzdiIpCgpzdHIoZGF0YSkKYGBgCgpgYGB7cn0Kc3VtbWFyeShkYXRhKSAgICAgICMgU3VtbWFyeSBzdGF0aXN0aWNzCmBgYAoKYGBge3J9CmhlYWQoZGF0YSkKYGBgCgpgYGB7cn0Kc3VtKGlzLm5hKGRhdGEpKQpgYGAKCmBgYHtyfQpkYXRhJE1ha2UgPC0gYXMuZmFjdG9yKGRhdGEkTWFrZSkKZGF0YSRNb2RlbCA8LSBhcy5mYWN0b3IoZGF0YSRNb2RlbCkKZGF0YSRWZWhpY2xlX0NsYXNzIDwtIGFzLmZhY3RvcihkYXRhJFZlaGljbGVfQ2xhc3MpCmRhdGEkVHJhbnNtaXNzaW9uIDwtIGFzLmZhY3RvcihkYXRhJFRyYW5zbWlzc2lvbikKZGF0YSRGdWVsX1R5cGUgPC0gYXMuZmFjdG9yKGRhdGEkRnVlbF9UeXBlKQpgYGAKCmBgYHtyfQpkYXRhIDwtIGRhdGEgJT4lIAogIG11dGF0ZShhY3Jvc3MoYyhNYWtlLCBNb2RlbCwgVmVoaWNsZV9DbGFzcywgVHJhbnNtaXNzaW9uLCBGdWVsX1R5cGUpLCBhcy5pbnRlZ2VyKSkKYGBgCgpgYGB7cn0Kc3RyKGRhdGEpCmBgYAoKYGBge3J9Cm1vZGVsIDwtIGxtKEZ1ZWxfQ29uc3VtcHRpb25fQ29tYl9MXzEwMGttIH4gRW5naW5lU2l6ZV9MLCBkYXRhID0gZGF0YSkKCnN1bW1hcnkobW9kZWwpCgpgYGAKCmBgYHtyfQojIFBsb3QgdGhlIGRhdGEgYW5kIHRoZSByZWdyZXNzaW9uIGxpbmUKZ2dwbG90KGRhdGEsIGFlcyh4ID0gRW5naW5lU2l6ZV9MLCB5ID0gRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20pKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2wgPSAiYmx1ZSIpICsKICBsYWJzKHggPSAiRW5naW5lIFNpemUgKEwpIiwgeSA9ICJGdWVsIENvbnN1bXB0aW9uIChMLzEwMCBrbSkiLCAKICAgICAgIHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIEVuZ2luZSBTaXplIGFuZCBGdWVsIENvbnN1bXB0aW9uIikKYGBgCgpgYGB7cn0KcGFyKG1mcm93PWMoMiwyKSkKcGxvdChtb2RlbCkKYGBgCgpgYGB7cn0KcGxvdChkYXRhJEVuZ2luZVNpemVfTCwgZGF0YSRGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgCiAgICAgeGxhYiA9ICJFbmdpbmUgU2l6ZSAoTCkiLCB5bGFiID0gIkZ1ZWwgQ29uc3VtcHRpb24gKEwvMTAwIGttKSIsCiAgICAgbWFpbiA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBFbmdpbmUgU2l6ZSBhbmQgRnVlbCBDb25zdW1wdGlvbiIpCgpgYGAKCmBgYHtyfQpjeWxpbmRlcnNfbW9kZWwgPC0gbG0oQ08yX0VtaXNzaW9uc19nX3Blcl9rbSB+IEN5bGluZGVycywgZGF0YSA9IGRhdGEpCgpzdW1tYXJ5KGN5bGluZGVyc19tb2RlbCkKCmBgYAoKYGBge3J9CmdncGxvdChkYXRhLCBhZXMoeCA9IEN5bGluZGVycywgeSA9IENPMl9FbWlzc2lvbnNfZ19wZXJfa20pKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2wgPSAiYmx1ZSIpICsKICBsYWJzKHggPSAiTnVtYmVyIG9mIEN5bGluZGVycyIsIHkgPSAiQ08yIEVtaXNzaW9ucyAoZy9rbSkiLCAKICAgICAgIHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIE51bWJlciBvZiBDeWxpbmRlcnMgYW5kIENPMiBFbWlzc2lvbnMiKQpgYGAKCmBgYHtyfQojIENyZWF0ZSBkdW1teSB2YXJpYWJsZXMgZm9yICdWZWhpY2xlX0NsYXNzJyB1c2luZyBtb2RlbC5tYXRyaXgKIyBUaGlzIGNyZWF0ZXMgYSBmdWxsIHNldCBvZiBkdW1teSB2YXJpYWJsZXMgKG9uZSBmb3IgZWFjaCBjbGFzcykKCgoKdmVoaWNsZV9jbGFzc19kdW1taWVzIDwtIG1vZGVsLm1hdHJpeCh+IFZlaGljbGVfQ2xhc3MgLSAxLCBkYXRhID0gZGF0YSkKCm1vZGVsX2RhdGEgPC0gZGF0YS5mcmFtZShGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSA9IGRhdGEkRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIHZlaGljbGVfY2xhc3NfZHVtbWllcykKCiMgRml0IHRoZSBsaW5lYXIgbW9kZWwKbW9kZWxfdmVoaWNsZV9jbGFzcyA8LSBsbShGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSB+IC4sIGRhdGEgPSBtb2RlbF9kYXRhKQoKc3VtbWFyeShtb2RlbF92ZWhpY2xlX2NsYXNzKQoKYGBgCgpgYGB7cn0KcGxvdChtb2RlbF92ZWhpY2xlX2NsYXNzKQpgYGAKCmBgYHtyfQoKdmVoaWNsZV9jbGFzc19kdW1taWVzIDwtIG1vZGVsLm1hdHJpeCh+IFZlaGljbGVfQ2xhc3MsIGRhdGEgPSBkYXRhKVssIC0xXQpmdWVsX3R5cGVfZHVtbWllcyA8LSBtb2RlbC5tYXRyaXgofiBGdWVsX1R5cGUsIGRhdGEgPSBkYXRhKVssIC0xXQp0cmFuc21pc3Npb25fZHVtbWllcyA8LSBtb2RlbC5tYXRyaXgofiBUcmFuc21pc3Npb24sIGRhdGEgPSBkYXRhKVssIC0xXQoKZGF0YSA8LSBjYmluZChkYXRhLCB2ZWhpY2xlX2NsYXNzX2R1bW1pZXMsIGZ1ZWxfdHlwZV9kdW1taWVzLCB0cmFuc21pc3Npb25fZHVtbWllcykKCmBgYAoKYGBge3J9CiMgRml0IHRoZSBtdWx0aXBsZSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbAptb2RlbCA8LSBsbShDTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgLiwgZGF0YSA9IGRhdGEpCgojIFZpZXcgdGhlIHN1bW1hcnkgb2YgdGhlIG1vZGVsCnN1bW1hcnkobW9kZWwpCmBgYAoKYGBge3J9Cm1vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NpdHlfTF8xMDBrbSArIEZ1ZWxfQ29uc3VtcHRpb25fSHd5X0xfMTAwa20gKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCnN1bW1hcnkobW9kZWwpCmBgYAoKYGBge3J9CnZpZl9tb2RlbCA8LSB2aWYobW9kZWwpCnZpZl9tb2RlbAoKYGBgCgpgYGB7cn0KCmRhdGFfc3Vic2V0IDwtIGRhdGFbLCBjKCJFbmdpbmVTaXplX0wiLCAiQ3lsaW5kZXJzIiwgIkZ1ZWxfQ29uc3VtcHRpb25fQ2l0eV9MXzEwMGttIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICJGdWVsX0NvbnN1bXB0aW9uX0h3eV9MXzEwMGttIiwgIkZ1ZWxfQ29uc3VtcHRpb25fQ29tYl9MXzEwMGttIildCgpjb3IubWF0IDwtIHJvdW5kKGNvcihkYXRhX3N1YnNldCksIDIpCgpjb3IubWF0CgpgYGAKCmBgYHtyfQpwbG90KG1vZGVsKQpgYGAKCmBgYHtyfQpyZXZpc2VkX21vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCgpzdW1tYXJ5KHJldmlzZWRfbW9kZWwpCmBgYAoKYGBge3J9CiMgQ2hlY2sgVklGIGZvciB0aGUgcmV2aXNlZCBtb2RlbAp2aWZfcmV2aXNlZF9tb2RlbCA8LSB2aWYocmV2aXNlZF9tb2RlbCkKdmlmX3JldmlzZWRfbW9kZWwKYGBgCgpgYGB7cn0KIyBQbG90IGRpYWdub3N0aWNzCnBsb3QocmV2aXNlZF9tb2RlbCkKYGBgCgpgYGB7cn0KZGF0YSRsb2dfQ08yX0VtaXNzaW9uc19nX3Blcl9rbSA8LSBsb2coZGF0YSRDTzJfRW1pc3Npb25zX2dfcGVyX2ttKQoKbG9nX21vZGVsIDwtIGxtKGxvZ19DTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShsb2dfbW9kZWwpCmBgYAoKYGBge3J9CnBsb3QobG9nX21vZGVsKQpgYGAKCmBgYHtyfQpwb2x5X21vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBwb2x5KEVuZ2luZVNpemVfTCwgMikgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCgppbnRlcmFjdF9tb2RlbCA8LSBsbShDTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICogQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShwb2x5X21vZGVsKQoKc3VtbWFyeShpbnRlcmFjdF9tb2RlbCkKYGBgCgpgYGB7cn0KcGxvdChwb2x5X21vZGVsKQpgYGAKCmBgYHtyfQpwbG90KGludGVyYWN0X21vZGVsKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KE1BU1MpCgojIEZpbmQgdGhlIG9wdGltYWwgQm94LUNveCB0cmFuc2Zvcm1hdGlvbiBmb3IgdGhlIHJlc3BvbnNlIHZhcmlhYmxlCmJjIDwtIGJveGNveChDTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKIyBJZGVudGlmeSB0aGUgbGFtYmRhIHRoYXQgbWF4aW1pemVzIHRoZSBsb2ctbGlrZWxpaG9vZApsYW1iZGEgPC0gYmMkeFt3aGljaC5tYXgoYmMkeSldCgojIEFwcGx5IHRoZSBCb3gtQ294IHRyYW5zZm9ybWF0aW9uIHdpdGggdGhlIGlkZW50aWZpZWQgbGFtYmRhCmRhdGEkQkNfQ08yX0VtaXNzaW9ucyA8LSAoZGF0YSRDTzJfRW1pc3Npb25zX2dfcGVyX2ttXmxhbWJkYSAtIDEpIC8gbGFtYmRhCgojIEZpdCB0aGUgbW9kZWwgd2l0aCB0aGUgQm94LUNveCB0cmFuc2Zvcm1lZCByZXNwb25zZSB2YXJpYWJsZQpiY19tb2RlbCA8LSBsbShCQ19DTzJfRW1pc3Npb25zIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKIyBWaWV3IHRoZSBzdW1tYXJ5IG9mIHRoZSBtb2RlbApzdW1tYXJ5KGJjX21vZGVsKQpgYGAKCmBgYHtyfQpwbG90KGJjX21vZGVsKQpgYGAKCmBgYHtyfQpmdWxsX21vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCgpzdGVwd2lzZV9tb2RlbCA8LSBzdGVwKGZ1bGxfbW9kZWwsIGRpcmVjdGlvbj0iYm90aCIpCgpzdW1tYXJ5KHN0ZXB3aXNlX21vZGVsKQpgYGAKCmBgYHtyfQoKZGF0YSA8LSByZWFkLmNzdigiL1VzZXJzL3ZpbmF5L0Rlc2t0b3AvTGluZWFyUmVncmVzc2lvbi9wcm9qZWN0L0NPMl9FbWlzc2lvbnMuY3N2IikKCmRhdGEkVmVoaWNsZV9DbGFzcyA8LSBhcy5mYWN0b3IoZGF0YSRWZWhpY2xlX0NsYXNzKQpkYXRhJFRyYW5zbWlzc2lvbiA8LSBhcy5mYWN0b3IoZGF0YSRUcmFuc21pc3Npb24pCmRhdGEkRnVlbF9UeXBlIDwtIGFzLmZhY3RvcihkYXRhJEZ1ZWxfVHlwZSkKCmZ1bGxfbW9kZWxfY2F0IDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyAKICAgICAgICAgICAgICAgICAgICAgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20gKyBWZWhpY2xlX0NsYXNzICsgCiAgICAgICAgICAgICAgICAgICAgIFRyYW5zbWlzc2lvbiArIEZ1ZWxfVHlwZSwgZGF0YSA9IGRhdGEpCgpzdGVwd2lzZV9tb2RlbF9jYXQgPC0gc3RlcChmdWxsX21vZGVsX2NhdCwgZGlyZWN0aW9uPSJib3RoIikKCnN1bW1hcnkoc3RlcHdpc2VfbW9kZWxfY2F0KQpgYGAKCmBgYHtyfQpkYXRhIDwtIHJlYWQuY3N2KCIvVXNlcnMvdmluYXkvRGVza3RvcC9MaW5lYXJSZWdyZXNzaW9uL3Byb2plY3QvQ08yX0VtaXNzaW9ucy5jc3YiKQoKZGF0YSRUcmFuc21pc3Npb24gPC0gYXMuZmFjdG9yKGRhdGEkVHJhbnNtaXNzaW9uKQpkYXRhJEZ1ZWxfVHlwZSA8LSBhcy5mYWN0b3IoZGF0YSRGdWVsX1R5cGUpCgptb2RlbF9mdWVsX2VmZmljaWVuY3kgPC0gbG0oRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20gfiBUcmFuc21pc3Npb24gKiBGdWVsX1R5cGUsIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShtb2RlbF9mdWVsX2VmZmljaWVuY3kpCmBgYAoKYGBge3J9CnBhcihtZnJvdz1jKDIsMikpCnBsb3QobW9kZWxfZnVlbF9lZmZpY2llbmN5KQpgYGAK